package com.dragonfly.shutter.DAOs;

import java.util.List;

import com.dragonfly.shutter.beans.PictureBrief;
import com.dragonfly.shutter.beans.PictureDetail;

/**
 * 图片DAO
 * @author 黄挺
 */
public interface PictureDAO {
	/**
	 * 将PictureDetail Bean插入到数据库中去
	 * @param picDetail PictureDetail Bean
	 * @return 新记录主键
	 */
	public String insertPicture(PictureDetail picDetail);
	
	/**
	 * 修改PictureDetail的图片flag_deltete（可删除标记位）
	 * @param PictureDetail
	 * @return 影响行数
	 */
	public int updatePictureDelFlag(PictureDetail picDetail);
	
	/**
	 * 根据picture_id来修改图片的属性
	 * @param picDetail PictureDetail Bean
	 * @return 影响行数
	 */
	public int updatePictureByID(PictureDetail picDetail);
	
	/**
	 * 根据图片ID来读取一张图片的简要信息
	 * @param pictureID 图片ID
	 * @return 图片简要信息
	 */
	public PictureBrief selectPicBriefByPicId(String pictureID);
	
	/**
	 * 根据相册ID来查询图片的简要信息
	 * @param albumID 相册ID
	 * @param minRow 记录的开始位置
	 * @param maxRow 记录的结束的位置
	 * @param flagSortType 排序方式
	 * @return 相册内一组图片的简要信息
	 */
	public List<PictureBrief> selectPagedPicBriefByAlbumId(Integer albumID, Integer minRow, Integer maxRow, String flagSortType);
	
	/**
	 * 根据图片名称的查询图片的简要信息
	 * @param pictureName 图片名字
	 * @param minRow 记录开始位置
	 * @param maxRow 记录结束的位置
	 * @return 查询结果的一组图片简要信息
	 */
	public List<PictureBrief> selectPicBriefByPicName(String pictureName, Integer minRow, Integer maxRow);
	
	/**
	 * 根据picture_id来获取图片属性
	 * @param pictureID 图片ID
	 * @return 图片具体信息
	 */
	public PictureDetail selectPicByPicID(String pictureID);
	
	/**
	 * 更新图片的总评分 
	 * @param picturDetail 图片Bean
	 * @return 影响行数
	 */
	public int updatePicScore(String pictureID, Integer score);
	
	/**
	 * 根据图片ID来获取图片的物理地址
	 * @param pictureID 图片ID
	 * @return 图片的物理地址
	 */
	public String selectLocationByPicID(String pictureID);
	
	/**
	 * 根据图片ID更新图片的审查标记位
	 * @param pictureDetail 图片Bean
	 * @return 影响行数
	 */
	public int updatePictureCheckFlag(String pictureID, String flagCheck);
	
	/**
	 * 分页查询所有被举报的图片
	 * @param minRow 记录开始位置
	 * @param maxRow 记录结束位置
	 */
	public List<PictureBrief> selectReportedPicture(Integer minRow, Integer maxRow);
	
	/**
	 * 获取图片的总评分
	 * @param pictureID 图片ID
	 * @return 图片的总评分
	 */
	public Integer selectTotalScore(String pictureID);
	
	/**
	 * 获取用户最近上传的几张图片
	 * @param usreID 用户ID
	 * @param maxRow 图片数量
	 * @return 用户最近上传的几张图片
	 */
	public List<PictureBrief> selectRecentUploadPicture(Integer usreID, Integer maxRow);
	
	/**
	 * 更新图片被收藏的次数
	 * @param pictureID 图片ID
	 * @param collectCount 收藏次数
	 * @return 影响行数
	 */
	public int updateCollectCount(String pictureID, Integer collectCount);
	
	/**
	 * 查询被举报的图片的数量
	 * @return 被举报图片的数量
	 */
	public Integer selectReportedPictureCount();
	
	/**
	 * 查询最新上传的几张空开图片
	 * @param maxRow 图片张数
	 * @return 图片列表
	 */
	public List<PictureBrief> selectRecentUploadPublicPic(Integer maxRow);
	
	/**
	 * 根据图片名称模糊查询图片的数量
	 * @param name 图片名称
	 * @return 图片数量
	 */
	public Integer selectPicCountByPicName(String name);
	
	/**
	 * 更新图片路径
	 * @param pictureID 图片ID
	 * @param location 路径
	 * @return 影响行数
	 */
	public int updatePicLocation(String pictureID, String location);
	
	/**
	 * 查询用户所有者ID
	 * @param pictureID 图片ID
	 * @return 用户ID
	 */
	public Integer selectPicOwnerId(String pictureID);
	
	/**
	 * 查询图片缩略图地址
	 * @param pictureID 图片ID
	 * @return 图片缩略图地址
	 */
	public String selectThumbLocation(String pictureID);
}
